hvm: Fix memcpy_words() asm in ioemu.
authorkfraser@localhost.localdomain <kfraser@localhost.localdomain>
Tue, 10 Jul 2007 13:42:23 +0000 (14:42 +0100)
committerkfraser@localhost.localdomain <kfraser@localhost.localdomain>
Tue, 10 Jul 2007 13:42:23 +0000 (14:42 +0100)
Signed-off-by: Keir Fraser <keir@xensource.com>
tools/ioemu/target-i386-dm/exec-dm.c

index dc4c227355d0eb3aef4e9b797d07378cad9f83dd..6a5eb5eaaa88950583b418f4967fec8a8e392277 100644 (file)
@@ -446,18 +446,16 @@ extern unsigned long logdirty_bitmap_size;
 #if defined(__x86_64__) || defined(__i386__)
 static void memcpy_words(void *dst, void *src, size_t n)
 {
-    asm (
+    asm volatile (
         "   movl %%edx,%%ecx \n"
 #ifdef __x86_64__
         "   shrl $3,%%ecx    \n"
-        "   andl $7,%%edx    \n"
         "   rep  movsq       \n"
         "   test $4,%%edx    \n"
         "   jz   1f          \n"
         "   movsl            \n"
 #else /* __i386__ */
         "   shrl $2,%%ecx    \n"
-        "   andl $3,%%edx    \n"
         "   rep  movsl       \n"
 #endif
         "1: test $2,%%edx    \n"
@@ -467,7 +465,7 @@ static void memcpy_words(void *dst, void *src, size_t n)
         "   jz   1f          \n"
         "   movsb            \n"
         "1:                  \n"
-        : : "S" (src), "D" (dst), "d" (n) : "ecx" );
+        : "+S" (src), "+D" (dst) : "d" (n) : "ecx", "memory" );
 }
 #else
 static void memcpy_words(void *dst, void *src, size_t n)